import requests
from colorama import Fore,Style

from comms.user_path import *


#1.1登录鉴权接口
def seafile_login(username,password):
    # 设置url
    # login_url='http://192.168.239.129:38000/api2/auth-token/'
    # login_url=host+path_login_1
    login_url=get_url_info(1)
    #设置请求头
    login_headers={'content-type':'application/x-www-form-urlencoded'}
    #设置请求体
    login_body={
        'username':username,
        'password':password
    }
    # 发送post请求
    resp=requests.post(url=login_url,headers=login_headers,data=login_body)
    resp.encoding='UTF-8'
    #打印请求信息
    print(f'输出响应状态码：{Fore.GREEN}{resp.status_code}{Style.RESET_ALL}')
    print(f'输出响应头：{resp.headers}')
    print(f"输出响应体信息 token：{Fore.GREEN}{resp.text}{Style.RESET_ALL}")
    print(f'打印响应时间：{resp.elapsed.total_seconds()}')
    return resp
#1.2 获取账号信息
def seafile_ge_user_info(token):
    # 设置url
    # login_url='http://192.168.239.129:38000/api2/account/info/'
    # login_url=host+path_info_2
    login_url=get_url_info(2)
    #设置请求头
    login_headers={'Authorization':f'Token {token}'}
    #设置请求体
    # 发送post请求
    resp=requests.get(url=login_url,headers=login_headers)
    resp.encoding='UTF-8'
    #打印请求信息
    print(f'输出响应状态码：{Fore.GREEN}{resp.status_code}{Style.RESET_ALL}')
    print(f'输出响应头：{resp.headers}')
    print(f'输出响应体信息：{Fore.GREEN}{resp.text}{Style.RESET_ALL}')
    print(f'打印响应时间：{resp.elapsed.total_seconds()}')
    return resp

#1.3新增资料库接口
def seafile_add_new_database(token,name):
    # 设置url
    # login_url='http://192.168.239.129:38000/api2/repos/'
    # login_url=host+path_add_or_select_3_4
    login_url=get_url_info(3)
    #设置请求头
    login_headers={'Authorization':f'Token {token}'}
    #设置请求体
    login_bodys={
        'name':name
    }
    # 发送请求
    resp=requests.post(url=login_url,headers=login_headers,data=login_bodys)
    resp.encoding='UTF-8'
    #打印请求信息
    print(f'输出响应状态码：{Fore.GREEN}{resp.status_code}{Style.RESET_ALL}')
    print(f'输出响应头：{resp.headers}')
    print(f'输出响应体信息：{Fore.GREEN}{resp.text}{Style.RESET_ALL}')
    print(f'打印响应时间：{resp.elapsed.total_seconds()}')
    return resp
#1.4查询所有的资料库接口
def seafile_get_all_zlk(token):
    # 设置url
    # login_url='http://192.168.239.129:38000/api2/repos/'
    # login_url=host+path_add_or_select_3_4
    login_url=get_url_info(4)
    #设置请求头
    login_headers={'Authorization':f'Token {token}'}
    #设置请求体
    # 发送请求
    resp=requests.get(url=login_url,headers=login_headers)
    resp.encoding='UTF-8'
    #打印请求信息
    print(f'输出响应状态码：{Fore.GREEN}{resp.status_code}{Style.RESET_ALL}')
    print(f'输出响应头：{resp.headers}')
    print(f'输出响应体信息：{Fore.GREEN}{resp.text}{Style.RESET_ALL}')
    print(f'打印响应时间：{resp.elapsed.total_seconds()}')
    return resp
#1.5 修改资料库名字
def seafile_update_zlk(token,repo_id,repo_name):
    # 设置url
    # login_url=f'http://192.168.239.129:38000/api2/repos/{repo_id}/?op=rename'
    login_url=get_url_info(login_id=5,repo_id=f'{repo_id}')
    #设置请求头
    login_headers={'Authorization':f'Token {token}'}
    #设置请求体
    login_bodys={
        'repo_name':repo_name
    }
    # 发送请求
    resp=requests.post(url=login_url,headers=login_headers,data=login_bodys)
    resp.encoding='UTF-8'
    #打印请求信息
    print(f'输出响应状态码：{Fore.GREEN}{resp.status_code}{Style.RESET_ALL}')
    print(f'输出响应头：{resp.headers}')
    print(f'输出响应体信息：{Fore.GREEN}{resp.text}{Style.RESET_ALL}')
    print(f'打印响应时间：{resp.elapsed.total_seconds()}')
    return resp
#1.7在指定的资料库目录新建文件接口
def seafile_assign_zlk_add_file(token,id,repo_name):
    # 设置url
    # login_url=f'http://192.168.239.129:38000/api2/repos/{id}/file/?p=/{repo_name}&reloaddir=true'
    # login_url=get_path_5_6_7_8(id,7,repo_name)
    login_url=get_url_info(7,zlk_id=id,file_name=repo_name)
    #设置请求头
    login_headers={'Authorization':f'Token {token}'}
    #设置请求体
    login_bodys={
        'operation':'create'
    }
    # 发送请求
    resp=requests.post(url=login_url,headers=login_headers,data=login_bodys)
    resp.encoding='UTF-8'
    #打印请求信息
    print(f'输出响应状态码：{Fore.GREEN}{resp.status_code}{Style.RESET_ALL}')
    print(f'输出响应头：{resp.headers}')
    print(f'输出响应体信息：{Fore.GREEN}{resp.text}{Style.RESET_ALL}')
    print(f'打印响应时间：{resp.elapsed.total_seconds()}')
    return resp
#1.8在指定的资料库目录删除文件接口
def seafile_assign_zlk_del_file(token,zlk_id,repo_name):
    # 设置url
    # login_url=f'http://192.168.239.129:38000/api2/repos/{id}/file/?p=/{repo_name}&reloaddir=true'
    # login_url=get_path_5_6_7_8(id,8,repo_name)
    login_url=get_url_info(8,zlk_id=zlk_id,file_name=repo_name)
    #设置请求头
    login_headers={'Authorization':f'Token {token}'}
    #设置请求体
    # 发送请求
    resp=requests.delete(url=login_url,headers=login_headers)
    resp.encoding='UTF-8'
    #打印请求信息
    print(f'输出响应状态码：{Fore.GREEN}{resp.status_code}{Style.RESET_ALL}')
    print(f'输出响应头：{resp.headers}')
    print(f'输出响应体信息：{Fore.GREEN}{resp.text}{Style.RESET_ALL}')
    print(f'打印响应时间：{resp.elapsed.total_seconds()}')
    return resp
#1.6删除指定的资料库接口
def seafile_del_zlk(token,zlk_id):
    # 设置url
    # login_url=f'http://192.168.239.129:38000/api2/repos/{repo_id}/'
    # login_url=get_path_5_6_7_8(repo_id,6)
    login_url=get_url_info(6,zlk_id=zlk_id)
    #设置请求头
    login_headers={'Authorization':f'Token {token}'}
    #设置请求体
    # 发送请求
    resp=requests.delete(url=login_url,headers=login_headers)
    resp.encoding='UTF-8'
    #打印请求信息
    print(f'输出响应状态码：{Fore.GREEN}{resp.status_code}{Style.RESET_ALL}')
    print(f'输出响应头：{resp.headers}')
    print(f'输出响应体信息：{Fore.GREEN}{resp.text}{Style.RESET_ALL}')
    print(f'打印响应时间：{resp.elapsed.total_seconds()}')
    return resp












## 输入账号密码，调用函数方法，账号 seafile@admin.com   密码 admin
if __name__ == '__main__':
    # print("-----"*10)
    # seafile_login('seafile@admin.com','')    # 输入正确的账号，密码为空
    # print('-----'*10)
    # seafile_login('','admin')             #输入密码为空，密码正确
    resp=seafile_login('seafile@admin.com','admin') ## 正确密码调用
    token=eval(resp.text)['token']
    print(token)





